﻿using gamebank;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class nap_gold_phan_mem_gui_mail : System.Web.UI.Page
{
    string connectionString = "Data Source=112.213.94.110;Initial Catalog=AutoSendMail;User ID=sendmailamazon;PWD=thuan410";

    protected void Page_Load(object sender, EventArgs e)
    {

    }

    private bool NapGold(string strEmail, string strSeri, string strCode, string strLoaiThe, out string strMessage)
    {
        try
        {
            string gamebankaccount = "legozhin";
            cardMobile cr = new cardMobile();
            string[] a = cr.creditCard(strSeri, strCode, strLoaiThe, gamebankaccount);
            Int32 intSoTienNap = Convert.ToInt32(a[0]);
            if (intSoTienNap >= 10000)
            {
                //UPDATE GOLD VAO DATABASE
                if (xUpdateGold(intSoTienNap, strEmail, basConst.gstrNhaMangGameBank[Convert.ToInt32(strLoaiThe)], strCode))
                {
                    strMessage = "Bạn đã nạp thành công " + intSoTienNap + " Gold! Vui lòng quay lại màn hình chính và click vào nút [Kiểm Tra] Gold.";
                    return true;
                }
                else
                {
                    strMessage = "Bạn đã nạp thẻ thành công. Vui lòng liên hệ hỗ trợ để kiểm tra nếu số Gold của bạn chưa tăng";
                    return true;
                }
            }
            else
            {
                switch (intSoTienNap)
                {
                    case -3: strMessage = "* Thẻ không sử dụng được"; break;
                    case -10: strMessage = "* Nhập sai định dạng thẻ"; break;
                    case -1001: strMessage = "* Bạn nhập sai quá 3 lần vui lòng quay lại sau ít phút"; break;
                    case -1002: strMessage = "* Lỗi hệ thống"; break;
                    case -1003: strMessage = "* Ip không được phép truy cập"; break;
                    case -1004: strMessage = "* Lỗi hệ thống"; break;
                    case -1005: strMessage = "* Loại thẻ không đúng"; break;
                    case -1006: strMessage = "* Hệ thống gạch thẻ đang bảo trì"; break;
                    default: strMessage = "* Lỗi không xác định, vui lòng liên hệ BQT"; break;
                }
                return false;
            }
        }
        catch (Exception ex)
        {
            strMessage = "Nạp Gold không thành công vui lòng liên hệ bộ phận hỗ trợ";
            OsPortal.oFileHelper.WriteLogErr("nap_gold_phan_mem_gui_mail", "NapGold", ex.ToString());
            return false;
        }
    }

    private bool xUpdateGold(int iGold, string Email, string strNhaMang, string strMaThe)
    {
        using (SqlConnection con = new SqlConnection(connectionString))
        {
            con.Open();
            try
            {
                using (SqlCommand cmd = new SqlCommand("NAPGOLD", con))
                {
                    cmd.CommandType = CommandType.StoredProcedure;
                    cmd.Parameters.Add("@P_EMAIL", SqlDbType.NVarChar).Value = Email;
                    cmd.Parameters.Add("@P_GOLD", SqlDbType.Int).Value = iGold;
                    cmd.Parameters.Add("@P_NHAMANG", SqlDbType.NVarChar).Value = strNhaMang;
                    cmd.Parameters.Add("@P_MATHE", SqlDbType.NVarChar).Value = strMaThe;
                    cmd.ExecuteNonQuery();
                    return true;
                }
            }
            catch{return false;}
            finally{con.Close();}
        }
    }

    /// <summary>
    /// Kiểm tra Email cóa tồn tại không?
    /// </summary>
    /// <param name="Email"></param>
    /// <returns></returns>
    private bool xCheckMail(string Email)
    {
        using (SqlConnection con = new SqlConnection(connectionString))
        {
            con.Open();
            try
            {
                using (SqlCommand cmd = new SqlCommand("CHECK_EMAIL", con))
                {
                    cmd.CommandType = CommandType.StoredProcedure;
                    cmd.Parameters.Add("@P_EMAIL", SqlDbType.NVarChar).Value = Email;
                    SqlDataAdapter adp = new SqlDataAdapter(cmd);
                    DataTable dt = new DataTable();
                    adp.Fill(dt);
                    if (dt == null) return false;
                    if (dt.Rows.Count <= 0) return false;
                    return true;
                }
            }
            catch { return false; }
            finally { con.Close(); }
        }
    }

    protected void btnNapGold_Click(object sender, EventArgs e)
    {
        string strEmail = txtEmail.Text.Trim();
        string strNhaMang = ddltypeCrad.SelectedValue;
        string strSerie = txtSeriCrad.Text.Trim();
        string strCode = txtMaSoCard.Text.Trim();
        if (xCheckMail(strEmail))
        {
            string strMessage = "";
            NapGold(strEmail, strSerie, strCode, strNhaMang, out strMessage);
            OsPortal.oHtmlHelper.Alert(strMessage, this.Page);
        }
        else OsPortal.oHtmlHelper.Alert("Email không tồn tại trong hệ thống, vui lòng kiểm tra lại", this.Page);
    }
}